Skip to content

Conversation

@Philipp91
Copy link
Contributor

No description provided.

@Philipp91 Philipp91 marked this pull request as draft November 10, 2025 22:25
@Philipp91
Copy link
Contributor Author

It currently fails to compile because:

exception: caused by: org.jetbrains.org.objectweb.asm.MethodTooLargeException: Method too large: com/mikepenz/iconics/typeface/library/materialsymbols/OutlinedMaterialSymbols$Icon.<clinit> ()V
exception: 	at org.jetbrains.org.objectweb.asm.MethodWriter.computeMethodInfoSize(MethodWriter.java:2087)
exception: 	at org.jetbrains.org.objectweb.asm.ClassWriter.toByteArray(ClassWriter.java:489)
exception: 	at org.jetbrains.kotlin.codegen.ClassBuilderFactories$2.asBytes(ClassBuilderFactories.java:118)
exception: 	at org.jetbrains.kotlin.codegen.DelegatingClassBuilderFactory.asBytes(DelegatingClassBuilderFactory.kt:36)
exception: 	at org.jetbrains.kotlin.codegen.DelegatingClassBuilderFactory.asBytes(DelegatingClassBuilderFactory.kt:36)
exception: 	at org.jetbrains.kotlin.codegen.ClassFileFactory$ClassBuilderAndSourceFileList.asBytes(ClassFileFactory.java:358)
exception: 	at org.jetbrains.kotlin.codegen.ClassFileFactory$OutputClassFile.asByteArray(ClassFileFactory.java:322)
exception: 	... 25 more
exception: 

I guess the 4000-ish lines of code in a single enum are too much for the Kotlin compiler.

Do you have any advice on how to fix this? We could have separate classes somehow, perhaps split into 4 sub-ranges by alphabet?

@mikepenz
Copy link
Owner

@Philipp91 thank you very much. And yes, splitting it into multiple enums is required.

See for example:

@mikepenz
Copy link
Owner

Also I'd really appreciate if you could follow the naming scheme already established for the icon set from google:
https://github.com/mikepenz/Android-Iconics/pull/654/files#diff-51a0b488f963eb0be6c6599bf5df497313877cf5bdff3950807373912ac1cdc9R127-R128

@mikepenz
Copy link
Owner

The outlined one already exists: google-material-typeface-outlined-library but probably needs to be updated?

@Philipp91
Copy link
Contributor Author

Philipp91 commented Nov 11, 2025

The outlined one already exists: google-material-typeface-outlined-library

No that's something else. Those are the Material Icons (of which there are around 1400), whereas what I'm adding are the Material Symbols (of which there are around 4000 apparently). Both of them are published in the same GitHub repo:

These are two different official icon sets from Google, using the same underlying designs. Material Symbols is the current set, introduced in April 2022, built on variable font technology. Material Icons is the classic set, but no longer updated.


That's also why I broke with the naming scheme. But if you prefer, I can prefix google- everywhere, it's just that google-material-symbols-typeface-outlined-library is such a mouthful.

@mikepenz
Copy link
Owner

Ah! thanks for the clarification @Philipp91

@Philipp91
Copy link
Contributor Author

See for example

Thank you! I've now implemented it like that.

@Philipp91 Philipp91 marked this pull request as ready for review November 12, 2025 19:21
@mikepenz mikepenz requested a review from Copilot November 14, 2025 09:11
Copilot finished reviewing on behalf of mikepenz November 14, 2025 09:12
Copy link

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull Request Overview

This pull request adds support for Google Material Symbols icon font library to the Android-Iconics framework. Material Symbols is Google's newest icon set that consolidates over 2,500 glyphs into a single variable font file.

Key Changes

  • Added new material-symbols-typeface-outlined-library module with complete implementation
  • Integrated the library into the build system and app dependencies
  • Updated documentation to list Material Symbols as an available font

Reviewed Changes

Copilot reviewed 11 out of 13 changed files in this pull request and generated no comments.

Show a summary per file
File Description
settings.gradle Added module inclusion for material-symbols-typeface-outlined-library
release.sh Added publish command comment for material symbols
OutlinedMaterialSymbols.kt Main typeface implementation with 4,191 icon definitions split across two enums
Initializer.kt Auto-initialization via AndroidX Startup
AndroidManifest.xml Startup provider configuration for automatic font registration
gradle.properties Maven artifact configuration
download.sh Shell script to download font and generate icon definitions
consumer-proguard-rules.pro ProGuard rules to preserve the typeface class
build.gradle Module build configuration
app/build.gradle Added dependency on the new library
README.md Documentation update listing Material Symbols
font_description.xml Library metadata for AboutLibraries integration

💡 Add Copilot custom instructions for smarter, more guided reviews. Learn how to get started.

@mikepenz mikepenz merged commit 2947b50 into mikepenz:develop Nov 14, 2025
6 checks passed
@mikepenz
Copy link
Owner

thank you so much @Philipp91

it was released here 20 mins ago: https://repo1.maven.org/maven2/com/mikepenz/material-symbols-typeface-outlined/0.39.3.0/

@Philipp91
Copy link
Contributor Author

Thank you for taking care of it!

Should there be a -kotlin version also? (If I try with this one, I get the error from #463.)

@mikepenz
Copy link
Owner

That's 6 years ago. Everything is in kotlin now

I might have to release everything as I had to upgrade quite a few things to be able to publish again

@mikepenz
Copy link
Owner

If you add the core and typeface dependency. Do you still see the same?

@Philipp91
Copy link
Contributor Author

I believe that's what I did (or did you mean I should add nothing else?).

[versions]
iconics = "5.4.0"

[libraries]
iconics-core = { module = "com.mikepenz:iconics-core", version.ref = "iconics" }
iconics-compose = { module = "com.mikepenz:iconics-compose", version.ref = "iconics" }
google-material-typeface = { module = "com.mikepenz:google-material-typeface", version.strictly = "4.0.0.3-kotlin" }
community-material-typeface = { module = "com.mikepenz:community-material-typeface", version.strictly = "7.0.96.1-kotlin" }
material-symbols-typeface = { module = "com.mikepenz:material-symbols-typeface-outlined", version.strictly = "0.39.3.0"  }
java.lang.AbstractMethodError: abstract method "android.graphics.Typeface com.mikepenz.iconics.typeface.ITypeface.getRawTypeface()" on receiver java.lang.Class<com.mikepenz.iconics.typeface.library.materialsymbols.OutlinedMaterialSymbols>
    at com.mikepenz.iconics.typeface.library.materialsymbols.OutlinedMaterialSymbols.getRawTypeface(OutlinedMaterialSymbols.kt:22)
    at com.mikepenz.iconics.compose.IconicsPainter.<init>(IconicsPainter.kt:44)

@Philipp91
Copy link
Contributor Author

Philipp91 commented Nov 15, 2025

I suspect the typeface library is built against android.graphics.Typeface from API 36, whereas the library is built against an older version.

In other words, after bumping compileSdk, everything needs to be co-released once.

@mikepenz
Copy link
Owner

That's probably it. Will do a full rerelease of everything

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants